home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 25 / Cream of the Crop 25.iso / os2 / kzr0597.zip / MINNDA.CMD < prev    next >
OS/2 REXX Batch file  |  1997-02-19  |  6KB  |  149 lines

  1. /* REXX_Programm MinNDA.CMD zur Ermittlung des kleinsten Wertes der */
  2. /* Zahl ND, wenn mehrere oder auch nur eines der "externen"         */
  3. /* mathematischen Funktionen von kzr.cmd verwendet werden.          */
  4.  
  5. /* In diesem Programm MinNDA.CMD sind für alle Funktionen, deren Rechen-  */
  6. /* genauigkeit begrenzt ist, die mit Pfad "Pfd" versehenen Dateinamen     */
  7. /* festgelegt. In diese Dateien werden, sofern deren begrenzte Zahl ND    */
  8. /* wirksam wird, die jeweilige maximale Zahl ND abgespeichert.            */
  9. /* sqrt.cmd und root3.cmd haben keine interne Begrenzung für ND...        */
  10.  
  11.  
  12.    "@ echo off"
  13.    Call RxFuncAdd 'SysLoadFuncs', RexxUtil, 'SysLoadFuncs'
  14.    Call SysLoadFuncs
  15.  
  16.    /* Wird bei der Ausführung einer REXX-Anweisung ein Syntaxfehler */
  17.    /* festgestellt, so wird zur Prozedur "Fehlermeldung" verzweigt. */
  18.    signal on syntax name Fehlermsg
  19.  
  20.    /* Die Datei "Ergebnis.DAT" wird in dem Verzeichnis abgelegt, */
  21.    /* in dem auch die Datei "kzr.CMD" abgelegt ist.              */
  22.    Pfd=SysSearchPath("PATH", "kzr.cmd")
  23.    lp=LastPos("\", Pfd)
  24.    Pfd=DelStr(Pfd, 1+lp)
  25.    bufND =Pfd||"NDZahl.DAT"
  26.    bufMsg=Pfd||"Meldung.DAT"
  27.    /* Hier wird die in der "Kernfunktion" kzr.cmd festgelegte Zahl ND */
  28.    /* der zu verwendenden Dezimalstellen übernommen.                  */
  29.    ND = LineIn(bufND, 1)
  30.  
  31. /* Wenn Funktionen mit begrenzter Rechengenauigkeit hinzukommen, */
  32. /* hier ergänzen.                                                */
  33.    NDAsin      = Pfd||"NDAsin.DAT"
  34.    NDAcos      = Pfd||"NDAcos.DAT"
  35.    NDAtan      = Pfd||"NDAtan.DAT"
  36.    NDAcot      = Pfd||"NDAcot.DAT"
  37.    NDAexp      = Pfd||"NDAexp.DAT"
  38.    NDAln       = Pfd||"NDAln.DAT"
  39.    NDAlog      = Pfd||"NDAlog.DAT"
  40.    NDAld       = Pfd||"NDAld.DAT"
  41.    NDAn!       = Pfd||"NDAn!.DAT"
  42.    NDAnbin     = Pfd||"NDAbin.DAT"
  43.    NDAphi      = Pfd||"NDAphi.DAT"
  44.    NDAp_       = Pfd||"NDAp_.DAT"
  45.    NDAq_       = Pfd||"NDAq_.DAT"
  46.    NDAerf      = Pfd||"NDAerf.DAT"
  47.    NDAerfc     = Pfd||"NDAerfc.DAT"
  48.    NDAarcsin   = Pfd||"NDAarcsin.DAT"
  49.    NDAarccos   = Pfd||"NDAarccos.DAT"
  50.    NDAarctan   = Pfd||"NDAarctan.DAT"
  51.    NDAarccot   = Pfd||"NDAarccot.DAT"
  52.    NDApot      = Pfd||"NDApot.DAT"
  53.    NDAga       = Pfd||"NDAga.DAT"
  54.    NDAsinh     = Pfd||"NDAsinh.DAT"
  55.    NDAcosh     = Pfd||"NDAcosh.DAT"
  56.    NDAtanh     = Pfd||"NDAtanh.DAT"
  57.    NDAcoth     = Pfd||"NDAcoth.DAT"
  58.    NDAarsinh   = Pfd||"NDAarsinh.DAT"
  59.    NDAarcosh   = Pfd||"NDAarcosh.DAT"
  60.    NDAartanh   = Pfd||"NDAartanh.DAT"
  61.    NDAarcoth   = Pfd||"NDAarcoth.DAT"
  62.    NDApi       = Pfd||"NDApi.DAT"
  63.  
  64. /* Wenn Funktionen mit begrenzter Rechengenauigkeit hinzukommen, */
  65. /* hier ergänzen.                                                */
  66.    NDA.1 =LineIn(NDAsin     , 1)
  67.    NDA.2 =LineIn(NDAcos     , 1)
  68.    NDA.3 =LineIn(NDAtan     , 1)
  69.    NDA.4 =LineIn(NDAcot     , 1)
  70.    NDA.5 =LineIn(NDAexp     , 1)
  71.    NDA.6 =LineIn(NDAln      , 1)
  72.    NDA.7 =LineIn(NDAlog     , 1)
  73.    NDA.8 =LineIn(NDAld      , 1)
  74.    NDA.9 =LineIn(NDAphi     , 1)
  75.    NDA.10=LineIn(NDAp_      , 1)
  76.    NDA.11=LineIn(NDAq_      , 1)
  77.    NDA.12=LineIn(NDAerf     , 1)
  78.    NDA.13=LineIn(NDAerfc    , 1)
  79.    NDA.14=LineIn(NDAarcsin  , 1)
  80.    NDA.15=LineIn(NDAarccos  , 1)
  81.    NDA.16=LineIn(NDAarctan  , 1)
  82.    NDA.17=LineIn(NDAarccot  , 1)
  83.    NDA.18=LineIn(NDApot     , 1)
  84.    NDA.19=LineIn(NDAga      , 1)
  85.    NDA.20=LineIn(NDAsinh    , 1)
  86.    NDA.21=LineIn(NDAcosh    , 1)
  87.    NDA.22=LineIn(NDAtanh    , 1)
  88.    NDA.23=LineIn(NDAcoth    , 1)
  89.    NDA.24=LineIn(NDAarsinh  , 1)
  90.    NDA.25=LineIn(NDAarcosh  , 1)
  91.    NDA.26=LineIn(NDAartanh  , 1)
  92.    NDA.27=LineIn(NDAarcoth  , 1)
  93.    NDA.28=LineIn(NDApi      , 1)
  94.  
  95.  
  96. /* Wenn Funktionen mit begrenzter Rechengenauigkeit hinzukommen, */
  97. /* hier ergänzen.                                                */
  98.    Call Charout(NDAsin)    ;  Call SysFileDelete NDAsin
  99.    Call Charout(NDAcos)    ;  Call SysFileDelete NDAcos
  100.    Call Charout(NDAtan)    ;  Call SysFileDelete NDAtan
  101.    Call Charout(NDAcot)    ;  Call SysFileDelete NDAcot
  102.    Call Charout(NDAexp)    ;  Call SysFileDelete NDAexp
  103.    Call Charout(NDAln )    ;  Call SysFileDelete NDAln
  104.    Call Charout(NDAlog)    ;  Call SysFileDelete NDAlog
  105.    Call Charout(NDAld )    ;  Call SysFileDelete NDAld
  106.    Call Charout(NDAphi)    ;  Call SysFileDelete NDAphi
  107.    Call Charout(NDAp_ )    ;  Call SysFileDelete NDAp_
  108.    Call Charout(NDAq_ )    ;  Call SysFileDelete NDAq_
  109.    Call Charout(NDAerf)    ;  Call SysFileDelete NDAerf
  110.    Call Charout(NDAerfc)   ; Call SysFileDelete NDAerfc
  111.    Call Charout(NDAarcsin) ; Call SysFileDelete NDAarcsin
  112.    Call Charout(NDAarccos) ; Call SysFileDelete NDAarccos
  113.    Call Charout(NDAarctan) ; Call SysFileDelete NDAarctan
  114.    Call Charout(NDAarccot) ; Call SysFileDelete NDAarccot
  115.    Call Charout(NDApot)    ; Call SysFileDelete NDApot
  116.    Call Charout(NDAga)     ; Call SysFileDelete NDAga
  117.    Call Charout(NDAsinh)   ; Call SysFileDelete NDAsinh
  118.    Call Charout(NDAcosh)   ; Call SysFileDelete NDAcosh
  119.    Call Charout(NDAtanh)   ; Call SysFileDelete NDAtanh
  120.    Call Charout(NDAcoth)   ; Call SysFileDelete NDAcoth
  121.    Call Charout(NDAarsinh) ; Call SysFileDelete NDAarsinh
  122.    Call Charout(NDAarcosh) ; Call SysFileDelete NDAarcosh
  123.    Call Charout(NDAartanh) ; Call SysFileDelete NDAartanh
  124.    Call Charout(NDAarcoth) ; Call SysFileDelete NDAarcoth
  125.    Call charout(NDApi)     ; Call SysFileDelete NDApi
  126.  
  127.    /* Ein String mit Zahlen, denen jeweils ein Komma folgt, wird erzeugt. */
  128.    i=1; NDAstr=""
  129.    do while i<=28
  130.      if NDA.i > 0 then NDAstr=NDAstr||NDA.i||","
  131.      i=i+1
  132.    end
  133.    /* Das letzte Komma dieses Strings wird wieder entfernt. */
  134.    lp=LastPos(",", NDAstr)
  135.    if lp > 0 then  NDAstr=DelStr(NDAstr, lp)
  136.    say
  137.  
  138.    /* Wenn keine mathematischen Funktionen mit begrenzter     */
  139.    /* Rechengenauigkeit verwendet werden, Weitergabe von ND.  */
  140.    if length(NDAstr)=0 then do; NDAmin=ND; Signal WW; end
  141.    /* Da die Funktion offenbar einen String der Form "12,45,6,890,3"  */
  142.    /* so ohne weiteres nicht verarbeiten kann, ist die folgende       */
  143.    /* Anweisung erforderlich:                                         */
  144.    interpret "NDAmin=Min("NDAstr")"
  145.  
  146. WW:
  147.    return(NDAmin)
  148.  
  149.